Coloque su apellido y nombre en el campo
author.
Clone el repositorio de GitHub
Cree un Project y enlace al repositorio
clonado.
Resuelva lo solicitado.
Genere un reporte en formato .html o
.pdf
install.packages("packagename")if (!require("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install(version = "3.16")BiocManager::install("packagename")devtools y luego ejecutar:devtools::install_github("kassambara/ggpubr")Las librerías requeridas en esta evaluación son:
library(ggpmisc); library(ggplot2); library(plotly); library(palmerpenguins)## Loading required package: ggpp
## Loading required package: ggplot2
##
## Attaching package: 'ggpp'
## The following object is masked from 'package:ggplot2':
##
## annotate
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
library(ggplot2); library(magrittr); library(ggpubr); library(tidyverse)## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.0 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ lubridate 1.9.2 ✔ tibble 3.1.8
## ✔ purrr 1.0.1 ✔ tidyr 1.3.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ ggpp::annotate() masks ggplot2::annotate()
## ✖ tidyr::extract() masks magrittr::extract()
## ✖ dplyr::filter() masks plotly::filter(), stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ✖ purrr::set_names() masks magrittr::set_names()
## ℹ Use the ]8;;http://conflicted.r-lib.org/conflicted package]8;; to force all conflicts to become errors
library(ComplexHeatmap); library(viridis)## Loading required package: grid
## ========================================
## ComplexHeatmap version 2.14.0
## Bioconductor page: http://bioconductor.org/packages/ComplexHeatmap/
## Github page: https://github.com/jokergoo/ComplexHeatmap
## Documentation: http://jokergoo.github.io/ComplexHeatmap-reference
##
## If you use it in published research, please cite either one:
## - Gu, Z. Complex Heatmap Visualization. iMeta 2022.
## - Gu, Z. Complex heatmaps reveal patterns and correlations in multidimensional
## genomic data. Bioinformatics 2016.
##
##
## The new InteractiveComplexHeatmap package can directly export static
## complex heatmaps into an interactive Shiny app with zero effort. Have a try!
##
## This message can be suppressed by:
## suppressPackageStartupMessages(library(ComplexHeatmap))
## ========================================
##
##
## Attaching package: 'ComplexHeatmap'
##
## The following object is masked from 'package:plotly':
##
## add_heatmap
##
## Loading required package: viridisLite
La base de datos de esta pregunta contiene distintas mediciones para tres especies de pingüinos encontrados en el archipiélago de Palmer, en la Antártica. Estas tres especies son los Chinstrap, Gentoo y Adélie.
Puede revisar los datos de los pingüinos utilizando la instrucción
str() o skim().
skimr::skim(penguins)| Name | penguins |
| Number of rows | 344 |
| Number of columns | 8 |
| _______________________ | |
| Column type frequency: | |
| factor | 3 |
| numeric | 5 |
| ________________________ | |
| Group variables | None |
Variable type: factor
| skim_variable | n_missing | complete_rate | ordered | n_unique | top_counts |
|---|---|---|---|---|---|
| species | 0 | 1.00 | FALSE | 3 | Ade: 152, Gen: 124, Chi: 68 |
| island | 0 | 1.00 | FALSE | 3 | Bis: 168, Dre: 124, Tor: 52 |
| sex | 11 | 0.97 | FALSE | 2 | mal: 168, fem: 165 |
Variable type: numeric
| skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
|---|---|---|---|---|---|---|---|---|---|---|
| bill_length_mm | 2 | 0.99 | 43.92 | 5.46 | 32.1 | 39.23 | 44.45 | 48.5 | 59.6 | ▃▇▇▆▁ |
| bill_depth_mm | 2 | 0.99 | 17.15 | 1.97 | 13.1 | 15.60 | 17.30 | 18.7 | 21.5 | ▅▅▇▇▂ |
| flipper_length_mm | 2 | 0.99 | 200.92 | 14.06 | 172.0 | 190.00 | 197.00 | 213.0 | 231.0 | ▂▇▃▅▂ |
| body_mass_g | 2 | 0.99 | 4201.75 | 801.95 | 2700.0 | 3550.00 | 4050.00 | 4750.0 | 6300.0 | ▃▇▆▃▂ |
| year | 0 | 1.00 | 2008.03 | 0.82 | 2007.0 | 2007.00 | 2008.00 | 2009.0 | 2009.0 | ▇▁▇▁▇ |
A continuación se muestra un ejemplo de análisis de la data de los pingüinos de Palmer:
En la figura p1 se tiene un errorplot donde el largo
del pico es evaluado por cada especie e internamente por sexo del
ave.
En la figura p2 se tiene un boxplot donde se compara
el ancho del pico por cada especie.
En la figura p3 se tiene una regresión lineal donde
se mide el efecto de la longitud del pico sobre el ancho y se desagrega
por especie(fila) e isla (columnas).
Finalmente la figura compuesta con las tres figuras anteriores en una estrucutura:
## `geom_smooth()` using formula = 'y ~ x'
INTERPRETACIÓN
En el grafico (a) se observa la relación entre el ancho y el largo del pico, y en todos los casos se evidencia una correlación que sugiere que cuando más largo es el pico, tambien sera más ancho, aunque en la especie Adelie en la isla Torgersen esta relación es menos marcada. En cuanto el gráfico (b) las especies Chinstrap y Gentoo poseen picos más largo que la especie Adelie, pero todas las especies tienen en común que los machos presentan un pico más largo que el de las hembras. En el gráfico (c) se compara el ancho de los picos según las especies, de las cuales Adelie y Chinstrap tienen picos más anchos. Con esto se puede concluir que Adelie tienen picos anchos y cortos; Gentoo picos delgados y largos; y Chinstrap picos anchos y largos.
p4 y
p5donde:p4 es una regresión de x: body_mass_g y
y: flipper_length_mm, que tiene inserto la ecuación de la
regresión y el \(R^2\). Asimismo tiene
una coloración por sexo, y una separación por sexo e isla.
p5 tiene un correlation plot de las variables
numéricas de longitud de pico, ancho de pico, longitud de aleta y masa
corporal. La figura tiene que tener la apariencia de la imagen de abajo,
este se encuentra resuelto en la página de ggcorrplot.
# Escriba aquí su código
p4 = ggplot(pinguinos, aes(x=body_mass_g, y = flipper_length_mm, color=factor(sex))) +
scale_x_log10() + scale_y_log10() +
geom_point(size=0.5, alpha=0.5) + geom_smooth(method = "lm", se = FALSE, na.rm = TRUE) +
facet_grid(factor(species)~factor(island)) + theme_classic() + theme(legend.position = "none") +
stat_poly_eq(coef.digits = 2,use_label(c("eq", "adj.R2")), formula = y ~ poly(x,1, raw = TRUE),
label.x.npc = 0.9, label.y.npc = 1.0, cex=3) +
labs(x = "Masa corporal en gramos", y = "Longitud de la aleta en mm")
p4## `geom_smooth()` using formula = 'y ~ x'
##################################
library(ggcorrplot)
data(penguins)
corr <- round(cor(pinguinos[, c(3,4,5,6)]), 1)
head(corr[, 1:4])## bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
## bill_length_mm 1.0 -0.2 0.7 0.6
## bill_depth_mm -0.2 1.0 -0.6 -0.5
## flipper_length_mm 0.7 -0.6 1.0 0.9
## body_mass_g 0.6 -0.5 0.9 1.0
p5 = ggcorrplot(corr, hc.order = TRUE, type = "lower",
lab = TRUE)
p5##################################
ggarrange(p3, ggarrange(p5, p4, nrow=2), p1, p2
, ncol=2, nrow=3)## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
INTERPRETACIÓN
En las graficas se puede evidenciar una correlacion fuerte entre la masa corporal y el tamaño de la aleta
Los datos de expresión de genes son extensos, hay una gran cantidad
de genes y asimismo una gran cantidad de muestras de tejidos o lineas
celulares. En este ejemplo se desea ver el nivel de relación de las
muestras de diferentes tipos de tejidos en base a las cuantificaciones
de niveles de expresión genética. La data ejemplo es sintética, y están
guardadas en forma de tablas y se cargan con la función
load('nombre.RData'). Está basado en Simple
guide to heatmaps.
load('data/expression.Rdata') # carga la tabla de expression
load('data/metadata.Rdata')
str(expression)## rowws_df [2,191 × 11] (S3: rowwise_df/tbl_df/tbl/data.frame)
## $ Gene: chr [1:2191] "ABCA1" "ABCA10" "ABCA13" "ABCA2" ...
## $ X10 : num [1:2191] 13.97 10.88 9.17 11.34 8.77 ...
## $ X11 : num [1:2191] 12.24 8.81 7.63 14.98 11.64 ...
## $ X16 : num [1:2191] 12.63 11.25 7.49 13.68 11.29 ...
## $ X17 : num [1:2191] 13.18 9.87 8.13 12.01 8.07 ...
## $ X18 : num [1:2191] 11.38 8.06 8.26 16.01 12.39 ...
## $ X2 : num [1:2191] 12.33 9.35 6.43 13.44 10.13 ...
## $ X3 : num [1:2191] 13.48 11.25 9.96 12.26 10.13 ...
## $ X4 : num [1:2191] 11.38 8.59 7.5 16.01 11.51 ...
## $ X9 : num [1:2191] 10.98 9.48 7.08 15.39 11.34 ...
## $ var : num [1:2191] 1.06 1.39 1.15 3.17 2.04 ...
Esta data indica el nivel de expressión de los genes (filas) en cada muestra de células (columnas).
# El procesamiento es:
# 1. seleccionar solamente las muestras select()
# 2. transponer t()
# 3. calcula las distancias encluideanas basado en las medidas dis()
# 4. hacer que se vuelva una matriz de tipo dataframe
expr_dist <- expression %>% select(-Gene, -var) %>%
t() %>%
dist() %>%
as.matrix() %>% data.frame()
dim(expr_dist)## [1] 9 9
Se realiza un gráfico de mapa de calor preliminar que permite tener un primer vistazo del nivel de relación entre cada una de las muestras en base a la distancia euclideana.
Heatmap(expr_dist)## Warning: The input is a data frame-like object, convert it to a matrix.
Usualmente lo que se desea es saber si las muestras vienen de diferentes tejidos
metadata_heatmap <- metadata %>%
mutate(sample = paste0('X', sample)) %>% # nombres de muestras
filter(sample %in% colnames(expr_dist)) %>%
dplyr::select(sample, treatment_hours, serum) %>%
mutate(sample=factor(sample, levels=colnames(expr_dist))) %>%
arrange(sample) %>% unique()
ha_column = HeatmapAnnotation(df = data.frame(Tiempo = metadata_heatmap$treatment_hours,
Suero = metadata_heatmap$serum),
col = list(Serum = c("HS" = magma(20)[2], "HIHS" = magma(20)[3]),
Time = c("24" = magma(20)[14], "48" = magma(20)[12])))
# Mapa de calor anotado en la parte superior
Heatmap(expr_dist, col=viridis(10),
name = 'Distancias', top_annotation = ha_column, )## Warning: The input is a data frame-like object, convert it to a matrix.
Realice una descripción de lo que observa en el mapa de calor considerando:
las intensidades de color de las distancias,
el tiempo de exposición al tratamiento
el tipo de suero
INTERPRETACIÓN:
En el cuadro se observa que hay más distacia de los genes x18, x4 y x11 cuando se experimentó con ellos en el suero inactivado (HIHS) por 48 horas, que con respecto a los genes que no se trabajaron en este medio, ya que la distancia no sobrepasa el valor de 100. Si bien el tiempo transcurrido tambien afecta a la distancia ya que más tiempo es sinónimo de más distancia, el suero es el más influyente.
Realice la réplica e interpretación de los niveles de expresión génica en muestras de personas que sufren de artritits reumatoide; que se muestra en la sección 5 de la página A simple tutorial for a complex ComplexHeatmap y que se basa en el artículo Volume 28, Issue 9, 27 August 2019, Pages 2455-2470.e5.
require(RColorBrewer); require(ComplexHeatmap); require(circlize); ## Loading required package: RColorBrewer
## Loading required package: circlize
## ========================================
## circlize version 0.4.15
## CRAN page: https://cran.r-project.org/package=circlize
## Github page: https://github.com/jokergoo/circlize
## Documentation: https://jokergoo.github.io/circlize_book/book/
##
## If you use it in published research, please cite:
## Gu, Z. circlize implements and enhances circular visualization
## in R. Bioinformatics 2014.
##
## This message can be suppressed by:
## suppressPackageStartupMessages(library(circlize))
## ========================================
require(digest); require(cluster)## Loading required package: digest
## Loading required package: cluster
Aquí se carga los datos EMTAB6141.rdata que se requiere
para este ejercicio. Requieres usar:
'mat.tsv'
'metadata.tsv'
'sig_genes.list'
# Cargue aquí sus datosEn la siguiente celda de código, realice la réplica del mapa de calor
que se encuentra a la izquierda (hmap1) de esta figura:
# Escriba aquí sus códigosINTERPRETACIÓN:
Su repositorio de GitHub debe tener al menos los sigueites elementos:
Haber sido `clonado del repositorio del
profesor.
Haber sido enlazado a un repositorio local (Project)
generado en RStudio.
Tener el archivos .Rmd
Tener el archivo .HTML del examen (MANDATORIO PARA CALIFICAR).
Tener al menos 3 controles de la versión.
Tener un README.md con:
información personal,
información del equipo,
los programas y paquetes utilizados, y sus respectivas versiones